Transport Layer Security (TLS) and Secure Sockets Layer (SSL) provide cryptographic protocols that allow computing devices to securely communicate data over networks, e.g., the Internet. In one example, when establishing a secure communication channel, a client and a server can perform a handshake during which the client and the server exchange random numbers and a special number called the pre-master secret. These exchanged numbers can be combined with other data to generate a shared secret, i.e., the master secret, between the client and the server. The client and the server can then use the master secret to generate session keys.
The session keys are symmetric cryptographic keys that can be used to encrypt and decrypt data that is communicated between the client and the server through the secure communication channel. Thus, for example, once the session keys have been generated, the client can encrypt data to be sent to the server using the generated session key and, upon receiving the encrypted data, the server can use the generated session key to decrypt the encrypted data. Typically, a secure communication channel is needed to protect data being exchanged between the client and the server from being seen by third-party observers.